/***************************************************************************
创建者：华磊
 开始时间：               : 2020.1１.09
 copyright            : (C) 深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   顶部视窗对话框
*                                                                         *
 ***************************************************************************/
#ifndef TOPVIEW_H
#define TOPVIEW_H

#include <QWidget>
#include "topview_global.h"
#include "debugmode.h"
#include "changespeed.h"
#include "currentcoordinate.h"
#include "robotlist.h"
#include "controlmode.h"
#include "jogcoordinate.h"

#include <QTranslator>

#include "../CommunicateDelegate/globaldata.h"

struct RobotInformation
{
    int RobotId;
    QString RobotName;
};

namespace Ui {
class TopView;
}

/**
 * @brief The TopView class　顶部主窗体类
 */
class  TopView : public QWidget
{

    Q_OBJECT



public:
    explicit TopView(int styleId, QWidget *parent = 0);
    ~TopView();

    void updateCurrentRobotName(QString nameIn);
    /**
     * @brief updateChangeSpeedView     更新速度改变函数
     */
    void updateChangeSpeedView();
    /**
     * @brief updateDebugModeView       更新控制模式选择函数
     */
    void updateDebugModeView();
    /**
     * @brief updateCurrentCoordinateView   更新当前坐标系选择函数
     */
    void updateCurrentCoordinateView();
//    /**
//     * @brief updateRobotListView       更新机器人列表函数
//     */
//    void updateRobotListView();
    /**
     * @brief updateControlModeView     更新控制模式选择函数
     */
    void updateControlModeView();
    /**
     * @brief updateJogCoordinateView   更新手动坐标系选择函数
     */
    void updateJogCoordinateView();
    /**
     * @brief hideChildView         隐藏子窗体函数
     */
    void hideChildView();
    /**
     * @brief windowStatusSignal    更新顶部窗体状态函数
     */
    void windowStatusSignal();
    /**
     * @brief updateShowWindow      更新窗体显示函数
     */
    void updateShowWindow();


    /**
     * @brief changeLanguage        语言
     * @param language
     */
    void changeLanguage(int language);

private:
    void initialDisplayStyle(int styleId);

signals:
    void updateRobotListView_signal();
    void showMapView();

    /**
     * @brief changeControlMode     更改控制模式函数
     */
    void changeControlMode();
    /**
     * @brief changeCurrentRobot    更改当前机器人函数
     */
    void changeCurrentRobot();
    /**
     * @brief changeDebugMode       更改调试模式函数
     */
    void changeDebugMode();
    /**
     * @brief changeJogCoordinate   更改手动坐标系函数
     */
    void changeJogCoordinate();
    /**
     * @brief homeMenu;             显示主菜单函数
     */
    void homeMenu();
    /**
     * @brief programSelect         程序选择函数
     */
    void programSelect();
    /**
     * @brief showFileName          显示文件名称函数
     */
    void showFileName();
    /**
     * @brief changeAccount         更改账户函数
     */
    void changeAccount();
    /**
     * @brief showWindowStatus      显示顶部栏窗体状态函数
     */
    void showWindowStatus();

    /**
     * @brief useFilmSignal         调用背景膜
     */
    void useFilmSignal();

    void homeViewMotorSignal(int status);

private slots:

    /**
     * @brief on_maunal_btn_clicked     速度调节按钮响应槽函数
     */
    void on_maunal_btn_clicked();
    /**
     * @brief on_step_btn_clicked       调试模式按钮选择响应槽函数
     */
    void on_step_btn_clicked();
    /**
     * @brief on_joint_btn_clicked      坐标系选择按钮响应槽函数
     */
    void on_joint_btn_clicked();
    /**
     * @brief on_jog_btn_clicked        手动坐标系选择按钮响应槽函数
     */
    void on_jog_btn_clicked();
    /**
     * @brief on_coodinate_btn_clicked  当前坐标系选择按钮响应槽函数
     */
    void on_coodinate_btn_clicked();
    /**
     * @brief on_robot_btn_clicked      机器人列表按钮响应槽函数
     */
    void on_robot_btn_clicked();
    /**
     * @brief on_homemenu_btn_clicked   主菜单显示按钮响应槽函数
     */
    void on_homemenu_btn_clicked();
    /**
     * @brief on_file_btn_clicked       文件选择按钮响应槽函数
     */
    void on_file_btn_clicked();
    /**
     * @brief on_account_btn_clicked    用户选择按钮响应槽函数
     */
    void on_account_btn_clicked();

    void on_maunal_btn_map_clicked();

public slots:
    /**
     * @brief updateAllChildView        定时更新所有子view
     */
    void updateAllChildView();
    /**
     * @brief hideAllTopView            隐藏所有子页面
     */
    void hideAllTopViewSlot();


public:
    /**
     * @brief controlMode       控制模式
     */
    int controlMode;
    int tmpControlMode;
    /**
     * @brief autoSpeed         自动速度调节
     */
    float autoSpeed;
    float tmpAutoSpeed;
    /**
     * @brief maunalSpeed       手动速度调节
     */
    float maunalSpeed;
    float tmpMaunalSpeed;
    /**
     * @brief jogCoordinate     手动坐标系选择
     */
    int jogCoordinate;
    int tmpJogCoordinate;

    /**
     * @brief ipoModeFlag       TCP模式选择(法兰 外部)
     */
    int ipoModeFlag;

    /**
     * @brief currentToolCoordinate     当前工具坐标系
     */
    int currentToolCoordinate;
    int tmpToolCoordinate;
    /**
     * @brief currentUserCoordinate     当前用户坐标系
     */
    int currentUserCoordinate;
    int tmpUserCoordinate;

    /**
     * @brief debugMode     调试模式选择
     */
    int debugMode;
    int tmpDebugMode;

    /**
     * @brief robotList     机器人列表
     */
    QVector<RobotInformation>  robotList;
    /**
     * @brief line          表格选中元素
     */
    int robotLineID;
//    QString line;
//    QString tmpLine;
    /**
     * @brief account       用户类型
     */
    int account;
    int tmpAccount;

    /**
     * @brief fileName      文件名
     */
    QString fileName;
    QString tmpFileName;
    /**
     * @brief shortMessage          短文字消息
     */
    QString shortMessage;

    /**
     * @brief longMessage           长文字消息
     */
    QString longMessage;
    bool isLongMsg;

    int colorChangeCount;
    bool isBlack;
    QPalette tBlack;
    QPalette tRed;
    /**
     * @brief motorStatus           电机状态
     */
    int motorStatus;
    int tmpMotorStatus;

    //ui
    ChangeSpeed *changeSpeedView;
    ControlMode *controlModeView;
    CurrentCoordinate *currentCoordinateView;
    DebugMode *debugModeView;
    JogCoordinate *jogCoordinateView;
    RobotList *robotListView;

private:
    QTranslator translator;

private:
    Ui::TopView *ui;
};

#endif // TOPVIEW_H
